package com.agrimall.mapper;

import com.agrimall.entity.ConsultationSession;
import org.apache.ibatis.annotations.Param;
import java.util.List;

/**
 * 咨询会话Mapper接口
 */
public interface ConsultationSessionMapper {
    /**
     * 插入或更新会话
     */
    int insertOrUpdate(ConsultationSession session);
    
    /**
     * 根据会话ID查询会话
     */
    ConsultationSession selectBySessionId(@Param("sessionId") String sessionId);
    
    /**
     * 根据用户ID查询会话列表
     */
    List<ConsultationSession> selectByUserId(@Param("userId") Long userId);
    
    /**
     * 根据商家ID查询会话列表
     */
    List<ConsultationSession> selectByMerchantId(@Param("merchantId") Long merchantId);
    
    /**
     * 更新未读消息数
     */
    int updateUnreadCount(@Param("sessionId") String sessionId,
                          @Param("userUnread") Integer userUnread,
                          @Param("merchantUnread") Integer merchantUnread);
    
    /**
     * 清除未读消息数
     */
    int clearUnreadCount(@Param("sessionId") String sessionId,
                        @Param("userType") Integer userType);
    
    /**
     * 查询所有咨询会话列表（管理员）
     */
    List<ConsultationSession> selectAll(@Param("offset") int offset,
                                        @Param("limit") int limit);
    
    /**
     * 统计所有咨询会话数量（管理员）
     */
    int countAll();
}
